perm filename SMLF4.F4[TMP,LCS] blob
sn#162133 filedate 1975-06-06 generic text, type T, neo UTF8
00100 COMMENT ⊗ VALID 00002 PAGES
00200 C REC PAGE DESCRIPTION
00300 C00001 00001
00400 C00002 00002 C ***** NSCOL JUL 14 74 -- FOR EXPORT -- WRITES ON MAGTAPE OR DSK.
00500 C00009 ENDMK
00600 C⊗;
00200 C ****** LOAD WITH CMUIO.REL *********
00300 C TO WRITE ON DSK: BIGBIT←1; OR RCDFLG←1; TO WRITE ON TAPE: BIGBIT←-1;
00400 C BIGBIT←>1; WRITES ON DSK, 4TH LETTER OF NAME IS SET BY NUMBER.
00500 C IF RCDFLG IS NOT 0 OR 1, ONE LONG FILE IS WRITTEN. PLAY WITH 'PLAY'.
00600 SUBROUTINE SMPLS(LSBUF,ISBCNT,IBOTT,MAXAMP,BIGBIT,RCDFLG)
00700 COMMON JSB(10) /NM/INM(3),MQ(3)
00800 C*** COMMON /NICCOM/ NICNAM
00900 C*** TAKE OUT NICCOM IN MAIN PROG. AND HERE SOMETIME!
01000 CC*** DATA NICNAM /'MUSAA'/
01100 DIMENSION IBOTT(1)
01300 DATA INM(2)/' AMP='/
01400 IF(J)GO TO 6
01500 IEND=-1
01800 KR=-RCDFLG
02000 IMAX=50000
03300 1 INM(1)='MUSAA'+(KR-1)*2
03400 33 CALL PUTFIL(INM(1))
03500 34 J=-1
03800 666 IMAX=2050
05500 6 IF(MAXAMP.LT.IMAX)GO TO 44
05600 C IABS(MAXAMP) WON'T WORK 1ST TIME AROUND!!!!!!!⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗
05700 C 49999 IS MAXIMUM AMPL. POSSIBLE (ARBITRARY NUMBER.)
05800 CALL MESS(INM)
05900 CALL PNUM(MAXAMP)
06000 CALL PNUM(MAXAMP)
06100 RETURN
06200 44 CALL FASTOU(IBOTT(1),LSBUF)
06300 45 IF(ISBCNT.EQ.0)RETURN
06400 J=0
06600 CALL FINFIL
06900 2221 CALL MESS(INM)
07000 CALL PNUM(MAXAMP)
07200 END
07300
07400
07500
07600 SUBROUTINE SEG(FUNC)
07700 C TYPE AMPL, STEP# (UP TO STEP 512). SAME FORMAT AS GEN 1 IN MUSIC5.
07800 DIMENSION FUNC(512),A(4)
07900 COMMON K,STEP,AMP1,AMP2,DIF,IT,IS,ST,STPS,RK
08000 DATA (A(K),K=1,3)/'SEG ARRAY FULL/'/
08100 C REMOVE ABOVE LATER******** MAYBE.
08200 AMP1=0
08300 ST=0
08400 1 CALL RDNUM(AMP2)
08500 CALL RDNUM(STEP)
08600 IF(STEP.GT.1.)GO TO 3
08700 AMP1=AMP2
08800 GO TO 1
08900 C STEP=1 AND STEP=0 ARE CONSIDERED THE SAME.
09000 3 DIF=AMP2-AMP1
09100 5 IT=ST
09200 IS=STEP*5.120+.0001
09300 STEP=IS
09400 STPS=STEP-ST
09500 IS=STPS
09600 IF(IS+IT.GT.512)GO TO 6
09700 ST=STEP
09800 IF(ST.EQ.0)STEP=1.
09900 DO 2 K=1,IS
10000 RK=K
10100 2 FUNC(K+IT)=AMP1+DIF*RK/STPS
10200 AMP1=AMP2
10300 ST=STEP
10400 IF(STEP.LT.512)GO TO 1
10550 1102 CALL SEE(FUNC)
10560 CALL MESS(A)
10600 RETURN
10700 6 K=1
10800 C NEXT TO READ IN FULL ARRAYS
10900 8 CALL RDNUM(RK)
11000 7 FUNC(K)=RK
11100 K=K+1
11200 IF(K.LE.512)GO TO 8
11300 GO TO 1102
11400 END
11500
11600 SUBROUTINE SYNTH (FUNC)
11700 C AFTER 'SYNTH(F1);' TYPE 99= TO USE H,A,P,K: OTHERWISE
11800 C H,A ONLY. TYPE 999 TO END. NORMALIZATION IS AUTOMATIC.
11900 DIMENSION FUNC(512),F(5)
12000 COMMON I,XX,X,H,K,CON,XK,FAC,AMP,Y
12100 DATA (F(I),I=1,4)/'SYNTH ARRAY FULL/'/
12200 DO 15 I=1,512
12300 15 FUNC(I)=0.0
12400 CALL RDNUM(XX)
12500 IF(XX.EQ.99)XX=-99
12600 FAC=360./512.
12700 H=XX
12800 IF(XX)CALL RDNUM(H)
12900 16 CALL RDNUM(AMP)
13000 IF(XX)GO TO 1016
13100 X=0
13200 CON=0
13300 GO TO 2016
13400 1016 CALL RDNUM(X)
13500 X=X*512./360.+1.0
13600 CALL RDNUM(CON)
13700 2016 DO 17 J=1,512
13800 XK=SIND(X*FAC)*AMP+CON
13900 IF(CON.LT.100.0)GO TO 1
14000 FUNC(J)=(XK-100.)*FUNC(J)
14100 GO TO 2
14200 1 FUNC(J)=FUNC(J)+XK
14300 2 X=X+H
14400 IF(X.LE.512.)GO TO 17
14500 X=X-512.
14600 17 CONTINUE
14700 CALL RDNUM(H)
14800 IF(H.NE.999.)GO TO 16
14900 2200 X=FUNC(1)
15000 DO 19 I=2,512
15100 H=ABS(FUNC(I))
15200 19 IF(X.LT.H)X=H
15300 DO 20 I=1,512
15400 20 FUNC(I)=FUNC(I)/X
15450 CALL SEE(FUNC)
15500 CALL MESS(F)
15700 END
16200
16300 SUBROUTINE SEE(FUNC)
16400
16500 DIMENSION FUNC(512),SU(150),C(3)
16600 DATA (C(I),I=1,2)/'0=CLEAR: '/
16700 CC CALL DDCLR
16800 C THIS VERSION MUST BE LOADED WITH %LTVRLIB (FOR 'DDCLR')
16900 CC CALL TYPLOC(-300,-512)
17000 CALL DPYSET(2,SU,150)
17100 CC CALL DPYBRT(6)
17200 CALL ALINE(-264,0,256,0)
17300 CALL ALINE(-256,-256,-256,256)
17400 CALL AIVECT(0,0)
17500 1 IY=FUNC(1)*256.0
17600 CALL AIVECT(-256,IY)
17700 DO 14 I=2,512,3
17800 IY2=FUNC(I)*256.0
17900 CALL RVECT(3,IY2-IY)
18000 14 IY=IY2
18100 CALL DPYOUT(2)
18200 CS100 CALL MESS(C)
18300 CS1100 CALL RDNUM(X)
18400 CS CALL DPYCLR
18500 END